package utils

import "github.com/robfig/cron/v3"

// 初始化定义一个定时对象
var c = cron.New(cron.WithSeconds(), cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))

// 任务列表缓存 切片
var entryIds []cron.EntryID

// 是否启动
var runFlag = false

// 添加定时任务
func AddCronTask(spec string, cmd func(), nowTask bool) {
	//判断是否立刻执行一次
	if nowTask {
		//立刻执行当前方法 在添加到定时器
		go cmd()
	}
	//添加定时任务
	entryId, _ := c.AddFunc(spec, cmd)
	//缓存当前任务id
	entryIds = append(entryIds, entryId)
	//判断任务是否启动
	if !runFlag {
		//启动任务
		startCronTask()
	}
}

// 定时任务启动
func startCronTask() {
	//启动任务扫描
	runFlag = true
	//清空之前的任务
	c.Start()
}

// 定时任务清空
func clearCronTask() {
	//清空之前的任务
	if len(entryIds) > 0 {
		//循环
		for _, value := range entryIds {
			//移除之前的任务
			c.Remove(value)
		}
	}
}
